home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / keyboard.cls < prev    next >
Text File  |  1997-06-14  |  5KB  |  164 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "CKeyboard"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = False
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = True
  10. Option Explicit
  11.  
  12. Public Enum EErrorKeyboard
  13.     eeBaseKeyboard = 13080  ' CKeyboard
  14. End Enum
  15.  
  16. Private abKeys(0 To 255) As Byte
  17.  
  18. ' Get or set toggle state of Caps Lock key
  19. Property Get CapsState() As Boolean
  20.     ' Get toggled and pressed state of all keys
  21.     GetKeyboardState abKeys(0)
  22.     ' Check low bit for state
  23.     CapsState = abKeys(VK_CAPITAL) And 1
  24. End Property
  25.  
  26. Property Let CapsState(fCapsStateA As Boolean)
  27.     ' Get toggled and pressed state of all keys
  28.     GetKeyboardState abKeys(0)
  29.     ' Set low bit to new pressed state
  30.     If fCapsStateA Then
  31.         abKeys(VK_CAPITAL) = abKeys(VK_CAPITAL) Or 1
  32.     Else
  33.         abKeys(VK_CAPITAL) = abKeys(VK_CAPITAL) And &HFE
  34.     End If
  35.     ' Store changed array
  36.     SetKeyboardState abKeys(0)
  37. End Property
  38.  
  39. ' Get or set toggle state of Insert key
  40. Property Get InsState() As Boolean
  41.     ' Get toggle and pressed state of all keys
  42.     GetKeyboardState abKeys(0)
  43.     ' Check low bit for state
  44.     InsState = abKeys(VK_INSERT) And 1
  45. End Property
  46.  
  47. Property Let InsState(fCapsStateA As Boolean)
  48.     ' Get toggle and pressed state of all keys
  49.     GetKeyboardState abKeys(0)
  50.     ' Set low bit to new pressed state
  51.     If fCapsStateA Then
  52.         abKeys(VK_INSERT) = abKeys(VK_INSERT) Or 1
  53.     Else
  54.         abKeys(VK_INSERT) = abKeys(VK_INSERT) And &HFE
  55.     End If
  56.     ' Store changed array
  57.     SetKeyboardState abKeys(0)
  58. End Property
  59.  
  60. ' Get or set toggle state of Num Lock key
  61. Property Get NumState() As Boolean
  62.     ' Get toggle and pressed state of all keys
  63.     GetKeyboardState abKeys(0)
  64.     ' Check low bit for state
  65.     NumState = abKeys(VK_NUMLOCK) And 1
  66. End Property
  67.  
  68. Property Let NumState(fCapsStateA As Boolean)
  69.     ' Get toggle and pressed state of all keys
  70.     GetKeyboardState abKeys(0)
  71.     ' Set low bit to new pressed state
  72.     If fCapsStateA Then
  73.         abKeys(VK_NUMLOCK) = abKeys(VK_NUMLOCK) Or 1
  74.     Else
  75.         abKeys(VK_NUMLOCK) = abKeys(VK_NUMLOCK) And &HFE
  76.     End If
  77.     ' Store changed array
  78.     SetKeyboardState abKeys(0)
  79. End Property
  80.  
  81. ' Get or set toggle state of Scroll Lock key
  82. Property Get ScrollState() As Boolean
  83.     ' Get toggle and pressed state of all keys
  84.     GetKeyboardState abKeys(0)
  85.     ' Check low bit for state
  86.     ScrollState = abKeys(VK_SCROLL) And 1
  87. End Property
  88.  
  89. Property Let ScrollState(fCapsStateA As Boolean)
  90.     ' Get toggle and pressed state of all keys
  91.     GetKeyboardState abKeys(0)
  92.     ' Set low bit to new pressed state
  93.     If fCapsStateA Then
  94.         abKeys(VK_SCROLL) = abKeys(VK_SCROLL) Or 1
  95.     Else
  96.         abKeys(VK_SCROLL) = abKeys(VK_SCROLL) And &HFE
  97.     End If
  98.     ' Store changed array
  99.     SetKeyboardState abKeys(0)
  100. End Property
  101.  
  102. ' Get or set toggle state of any toggle key
  103. Property Get KeyState(iKey As Integer) As Boolean
  104.     ' Get toggle and pressed state of all keys
  105.     GetKeyboardState abKeys(0)
  106.     ' Check low bit for state
  107.     KeyState = abKeys(iKey) And 1
  108. End Property
  109.  
  110. Property Let KeyState(iKey As Integer, fKeyStateA As Boolean)
  111.     ' Get toggle and pressed state of all keys
  112.     GetKeyboardState abKeys(0)
  113.     ' Set low bit to new pressed state
  114.     If fKeyStateA Then
  115.         abKeys(iKey) = abKeys(iKey) Or 1
  116.     Else
  117.         abKeys(iKey) = abKeys(iKey) And &HFE
  118.     End If
  119.     ' Store changed array
  120.     SetKeyboardState abKeys(0)
  121. End Property
  122.  
  123. ' Get or set pressed state of any key
  124. Property Get KeyPressed(iKey As Integer) As Boolean
  125.     ' Get toggled and pressed state of all keys
  126.     GetKeyboardState abKeys(0)
  127.     ' Check high bit for state
  128.     KeyPressed = abKeys(iKey) And &H80
  129. End Property
  130.  
  131. Property Let KeyPressed(iKey As Integer, fKeyPressedA As Boolean)
  132.     ' Get toggle and pressed state of all keys
  133.     GetKeyboardState abKeys(0)
  134.     ' Set high bit to new pressed state
  135.     If fKeyPressedA Then
  136.         abKeys(iKey) = abKeys(iKey) Or &H80
  137.     Else
  138.         abKeys(iKey) = abKeys(iKey) And &H7F
  139.     End If
  140.     ' Store changed array
  141.     SetKeyboardState abKeys(0)
  142. End Property
  143.  
  144. #If fComponent = 0 Then
  145. Private Sub ErrRaise(e As Long)
  146.     Dim sText As String, sSource As String
  147.     If e > 1000 Then
  148.         sSource = App.ExeName & ".Keyboard"
  149.         Select Case e
  150.         Case eeBaseKeyboard
  151.             BugAssert True
  152.        ' Case ee...
  153.        '     Add additional errors
  154.         End Select
  155.         Err.Raise COMError(e), sSource, sText
  156.     Else
  157.         ' Raise standard Visual Basic error
  158.         sSource = App.ExeName & ".VBError"
  159.         Err.Raise e, sSource
  160.     End If
  161. End Sub
  162. #End If
  163.  
  164.